home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFUNCS / OBJSTCHG.C < prev    next >
C/C++ Source or Header  |  1993-03-20  |  1KB  |  56 lines

  1. /**************************************************************************
  2.  * OBJSTCHG.C - Change object state, with optional redraw.
  3.  *************************************************************************/
  4.  
  5. #include "gemfintl.h"
  6.  
  7. #ifdef GEMFAST_PROTOS
  8.   void obj_stchange(OBJECT *ptree, short object, short newstate,
  9.                     short drawflag, ...)
  10. #else
  11.   void obj_stchange(ptree, object, newstate, drawflag)
  12.     register OBJECT *ptree;
  13.     short              object;
  14.     short              newstate;
  15.     short              drawflag;
  16. #endif
  17. {
  18.     GRECT            *optional_clip;
  19.     GRECT            *pclip;
  20.     va_list         args;
  21.  
  22.     va_start(args, drawflag);
  23.     optional_clip = va_arg(args, GRECT *);
  24.     va_end(args);
  25.  
  26. /*
  27.  * check the newstate value. if the high bit is set, AND the newstate
  28.  * with the current state, else OR them.
  29.  */
  30.  
  31.     if (newstate & 0x8000) {
  32.         newstate &= ptree[object].ob_state;
  33.     }
  34.     else {
  35.         newstate |= ptree[object].ob_state;
  36.     }
  37.  
  38. /*
  39.  * if the drawflag is set, redraw the object.
  40.  * if the drawflag says a clipping rectangle was passed, use it,
  41.  * else use root object as the clipping rectangle for the redraw.
  42.  */
  43.  
  44.     if (drawflag == OBJ_CLIPDRAW) {
  45.         drawflag = OBJ_WITHDRAW;    /* xlate from 2 to 1                             */
  46.         pclip = optional_clip;
  47.     } else {
  48.         pclip = (GRECT *)&ptree->ob_x;
  49.     }
  50.  
  51.     objc_change(ptree, object, 0, RECTVALS(pclip), newstate, drawflag);
  52.  
  53. }
  54.  
  55.  
  56.